7368. Средний бал для фигуристов

 

Спортсменам-фигуристам n судей выставляют оценки. Технический работник соревнований изымает все максимальные и все минимальные оценки, а для остальных оценок вычисляет среднее арифметическое значение. Этот результат считается баллом, полученным спортсменом. Найдите такой балл для каждого спортсмена.

 

Вход. В первой строке находятся два целых числа: количество судей n и количество спортсменов m. В следующих m строках находятся n целых чисел – оценки всех судей (0 < n ≤ 10, 0 < m ≤ 100) для каждого из фигуристов.

 

Выход. В одной строке выведите m чисел с точностью до двух десятичных знаков – балл каждого спортсмена.

 

Пример входа

Пример выхода

5 4

7 8 9 8 10

6 5 5 4 7

9 9 10 7 7

7 7 10 9 8

8.33 5.33 9.00 8.50

 

 

РЕШЕНИЕ

обработка массивов

 

Анализ алгоритма

Для каждого спортсмена найдем минимальную min и максимальную max оценку. Далее для каждого спортсмена вычислим средний балл, не учитывающий min и max.

 

Пример

Для первого фигуриста наименьшей оценкой будет 7, наибольшей 10. Среднее арифметическое оценок, не равных 7 и 10, равно (8 + 9 + 8) / 3 = 8.33.

Для последнего фигуриста наименьшей оценкой будет 7, наибольшей 10. Среднее арифметическое оценок, не равных 7 и 10, равно (8 + 9) / 2 = 8.50.

 

Реализация алгоритма

Читаем входные данные.

 

scanf("%d %d", &n, &m);

 

Последовательно обрабатываем данные каждого фигуриста.

 

for (i = 0; i < m; i++)

{

  scanf("%d", &mas[0]);

 

Находим наименьшую min и наибольшую max оценку для текущего i-го фигуриста.

 

  min = max = mas[0];

  for (j = 1; j < n; j++)

  {

    scanf("%d", &mas[j]);

    if (mas[j] > max) max = mas[j];

    if (mas[j] < min) min = mas[j];

  }

 

Находим среднее арифметическое оценки текущего спортсмена. Сумму его оценок вычисляем в переменной sum, количество – в cnt.

 

  sum = cnt = 0;

  for (j = 0; j < n; j++)

 

Наименьший и наибольший баллы не учитываются.

 

    if ((mas[j] != min) && (mas[j] != max))

    {

      sum += mas[j];

      cnt++;

    }

 

Вычисляем и выводим среднее арифметическое i-го фигуриста.

 

  res = 1.0 * sum / cnt;

  printf("%.2lf ", res);

}

printf("\n");